/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model.estoque;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceException;
import model.excecoes.ErroDAOException;
import model.excecoes.ErroNegocioException;
import model.interfaces.INegocioEstoque;
import model.factory.Factory;
/**
 *
 * @author Marcos
 */
public class NegocioEstoque implements INegocioEstoque{

    
    private RepositorioEstoque repEstoque = null;
    
    public NegocioEstoque(){
        repEstoque = Factory.getEstoqueDAO();
    }
    
    
    
    @Override
    public void cadastrarProdutoEstoque(Estoque estoque) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException {
        if(estoque.getQuantidadeChegada() <= 0){
            throw new ErroNegocioException("A quantidade não pode ser igual ou menor que zero.");
        }
        
        repEstoque.cadastrar(estoque);
    }

    @Override
    public void alterarProdutoEstoque(Estoque estoque) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException {
        if(estoque.getQuantidadeChegada() <= 0){
            throw new ErroNegocioException("A quantidade não pode ser igual ou menor que zero.");
        }
        
        repEstoque.alterar(estoque);
    }

    @Override
    public void excluirProdutoEstoque(Estoque estoque) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException {
        repEstoque.excluir(estoque);
    }

    @Override
    public List<Estoque> listarEstoque(String consulta, String campo) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException {
        List<Estoque> estoques = repEstoque.listarEstoque(consulta, campo);
        
        if(!consulta.equals("Todos") && !campo.equals("Todos")){
            if(estoques.isEmpty()){
                throw new ErroNegocioException("Produto não encontrado ou ainda não chegou.\nPor favor verifique se o mesmo já foi encomendado.");
            }
        }
        
       return estoques;        
    }

    @Override
    public int identificarCodigoProduto(String descricao, String marca) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException {
        int codigo = repEstoque.identificarCodigoProduto(descricao, marca);
        
        if(codigo == 0){
            throw new ErroNegocioException("Código do Produto não confere.\nPor favor informe algum código válido ou cancele a operação.");
        }
        
        return codigo;
    }
    
}
